Subclasses Differ only in Methods returning Constant values (SDMC)

Description:

SDMC detects if all subclasses of a class vary only in methods that return constant data. In such cases, it is suggested to change the methods to superclass fields and eliminate the subclasses.

Incorrect:

abstract class Person {
    protected abstract bool IsMale();
    
    protected abstract char GetCode();
}

class Male : Person {
    protected override bool IsMale() {
        return true;
    }

    protected override char GetCode() {
        return 'M';
    }
}

class Female : Person {
    protected override bool IsMale() {
        return false;
    }

    protected override char GetCode() {
        return 'F';
    }
}  

Correct:

class Person {
    private bool isMale;
    private char code;
    
    protected bool IsMale() {
        return isMale;
    }
    
    protected char GetCode() {
        return code;
    }
}

Refactoring: